<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    //对象：一个具体的事物，一种复杂的数据类型，包括属性和方法
    //属性：对象的特征，用变量描述
    //方法：对象的行为（功能），用函数（方法）描述
    //1.创建对象：用字面量创建对象 ，在 {}中描述对象
    let obj1  = {};  //空对象
    console.log(obj1);
    console.log(typeof obj1);  //object对象
    let obj2 = {
        //属性  属性名： 值 ,多个属性之间用逗号（，）隔开
        userName : 'admin',
        password : '123',
        //方法
        login :function(){
            console.log('登入成功');
        }
    };
    //访问对象
    //对象.变量名; 或 对象['变量名'];   访问对象的属性
    console.log(obj2.userName);
    console.log(obj2['password']);
    //对象.方法名（）; 或 对象['方法名']（）；  调用对象的方法 
    obj2.login();
    obj2['login']();
    console.log('----------------------------------------');
    /*2.创建对象：用构造函数创建对象
         构造函数 ：一种特殊的函数，通过关键字 new调用这个函数能构造出一个对象
         step1 : 定义构造函数，一般将构造函数名的首字母大写;
         step2 : 使用关键字 new 构造函数对象
    */

    //1 描述对象
   function Stu(name,sex,id){
    // this关键字 ：这里
    this.name = name ;  //把传入的实参 name 传递给当前对象中的属性 name
    this.sex = sex ;  //后的 sex 传给 前的
    this.id = id ;
    this.show = function(){
        console.log('我叫：'+this.name);
    }
   };
   //2 关键字 new
   let student1 = new Stu(' Lihua','男','123');
   let student2 = new Stu('Tom','女','456');
   let student3 = new Stu('Lily','女','99');
   student1.show();  // 我叫： Lihua
   student2.show();
   student3.show();
   console.log('----------------');
   //3.创建对象 ：用object();创建对象
   let obj3 = new Object(); //构造空对象
   //添加属性和行为
   obj3.name = 'root';
   obj3.psd = '123';
   obj3.login = function(){
    //模板字符 ： `${变量名}`
    console.log(`${obj3.name}登入成功`);
   }
   //访问对象
   obj3.login();
   console.log('-----------');
   //遍历对象 for ...in
   //用字面量创建对象 ，对象中 有 title ,date ,author属性和 read()方法，
   let news = {
    title : ' xxx 塌房了',
    date : '2024年10月28日',
    author : '狗仔' ,
    read : function(){
        console.log('阅读新闻'+this.title);
    }
   }
   news.read();  // 打印 阅读新闻 xxx 塌房了
   console.log('------------');
   for (let temp in news){
    console.log(temp); //遍历出对象中属性的名字
    // console.log(news[temp]); 
        if(typeof news[temp]==='function'){
            news[temp]();
        }else{
            console.log(news[temp]); //获取对象中属性的值
        }
   }
   console.log('------------');
   //Math 对象 ：不用实例化
   let num = Math.floor(-2.12); //向下取整 
   console.log(num); //打印 -3
   console.log('------------');
   num = Math.random();  //取0 - 1 之间的随机数
   console.log(num);

</script>
</html>